package com.qidian.mes.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.List;

/**
 * @Author 戴着假发的程序员
 * @Company 起点编程
 * @Time 2023/10/24 10:34
 * @Description JSON转换工具类
 */
public class JSONTools {

    private static ObjectMapper mapper = new ObjectMapper();

    /**
     * 将对象转换为JSON
     * @param obj
     * @return
     */
    public static String object2json(Object obj){
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 将JSON字符串转换为指定类型的对象
     * @param json json字符串
     * @param clzz 指定的类型的class对象
     * @return
     * @param <T>
     */
    public static <T> T json2object(String json,Class<T> clzz){
        try {
            return mapper.readValue(json,clzz);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 将JSON字符串转换为指定类型的List
     * @param json
     * @param clzz
     * @return
     * @param <T>
     */
    public static <T> List<T> json2list(String json,Class<T> clzz){
        try {
            return mapper.readValue(json, new TypeReference<List<T>>() {});
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }

}
